package com.fruitshop.info.manager.service;

import com.fruitshop.info.manager.dao.FruitDao;
import com.fruitshop.info.manager.domain.Fruit;

import java.util.ArrayList;
import java.util.TreeSet;

/**
 1.此类是水果的服务员方法,为顾客提供了两个查看信息的方法
 2.考虑到管理员方便管理水果信息,单独划分出了一个查看方法
*/
@SuppressWarnings("all")
public class FruitService {
    FruitDao dao = new FruitDao();
    ArrayList<Fruit> list = dao.findAllFruits();
    TreeSet<Fruit> sort = dao.sortByInventory();
    TreeSet<Fruit> fruitTreeSet = dao.sortByPrice();

    public int getIndex(String num) {
        return dao.getIndex(num);
    }

    public void inventory(String fnum, int num, int[] arr) {
        dao.inventory(fnum, num, arr);
    }

    public void checkByPrice() {
        System.out.println("编号" + "\t\t\t" + "名称" + "\t\t" + "价格" + "\t\t" + "库存" + "\t\t" + "单位");
        fruitTreeSet.addAll(list);
        for (Fruit f : fruitTreeSet) {
            System.out.println(f.getNum() + "\t\t" + f.getName() + "\t\t" + f.getPrice() + "\t\t\t" + f.getInventory() + "\t\t\t" + f.getUnit());
        }
    }

    //顾客查看水果信息时的默认方法,按库存排序
    public void check() {
        System.out.println("编号" + "\t\t\t" + "名称" + "\t\t" + "价格" + "\t\t" + "库存" + "\t\t" + "单位");
        for (Fruit f : sort) {
            System.out.println(f.getNum() + "\t\t" + f.getName() + "\t\t" + f.getPrice() + "\t\t\t" + f.getInventory() + "\t\t\t" + f.getUnit());
        }
    }

    //管理员查看水果信息时的方法,直接读取文件中的水果信息,不支持排序
    public void managerCheck() {
        System.out.println("编号" + "\t\t\t" + "名称" + "\t\t" + "价格" + "\t\t" + "库存" + "\t\t" + "单位");
        for (Fruit f : list) {
            System.out.println(f.getNum() + "\t\t" + f.getName() + "\t\t" + f.getPrice() + "\t\t\t" + f.getInventory() + "\t\t\t" + f.getUnit());
        }
    }
    //获取水果新的方法
    public ArrayList<Fruit> findAllFruits() {
        return list;
    }
    //通过编号判断是否存在的方法
    public boolean isExist(String num) {
        boolean flag = false;
        for (Fruit fruit : list) {
            if (fruit.getNum().equals(num)) {
                flag = true;
            }
        }
        return flag;
    }
    //添加方法
    public void add(String num, String name, int price, int inventory, String unit) {
        dao.add(num, name, price, inventory, unit);
    }
    //输出方法
    public void delete(String num) {
        dao.delete(num);
    }
    //修改方法
    public void update(String num, Fruit newFruit) {
        dao.update(num, newFruit);
    }
    //计算用户购买的水果总金额的方法
    public int count(String name, int num) {
        //方法获取到客户购买的水果种类和数量
        int sum = 0;//设计一个变量用于计算总金额
        for (Fruit fruit : list) {
            //遍历集合,获得每种水果对应的价格
            if (name.equals(fruit.getName())) {
                //当获取到用户输入的水果之后让他乘以购买的数量
                sum += fruit.getPrice() * num;
            }
        }
        return sum;
    }
}
